import numpy as np

# 创建3x3矩阵并设置类型为int32
matrix = np.array([[11, 13, 18], [45, 46, 78], [15, 87, 33]], dtype=np.int32)
print("1. 3x3矩阵(int32类型):")
print(matrix)
print("矩阵类型:", matrix.dtype)
print()

# 查看数组的四种属性
print("2. 数组属性:")
print("形状(shape):", matrix.shape)
print("维度(ndim):", matrix.ndim)
print("元素总数(size):", matrix.size)
print("数据类型(dtype):", matrix.dtype)
print()

# 索引第2行，第3列的元素（注意：NumPy使用0-based索引）
print("3. 第2行，第3列的元素:", matrix[1, 2])
print()

# 切片第2行、列步长为2的元素
print("4. 第2行、列步长为2的元素:", matrix[1, ::2])
print()

# 切片第1~2行、第2~3列的元素
print("5. 第1~2行、第2~3列的元素:")
print(matrix[0:2, 1:3])
print()

# 通过整数数组作为索引获取第1行第2列、第2行第3列的元素
print("6. 整数数组索引结果:", matrix[[0, 1], [1, 2]])
print()

# 通过布尔型索引获取大于30小于80的元素
bool_mask = (matrix > 30) & (matrix < 80)
print("7. 大于30小于80的元素:", matrix[bool_mask])
print()

# 通过linspace函数创建[5,50]区间，元素个数为6的等差数列并显示公差
lin_arr = np.linspace(5, 50, 6)
print("8. 等差数列:", lin_arr)
print("公差:", lin_arr[1] - lin_arr[0])
print()

# 通过logspace函数创建指数区间为[0，8），元素个数为6，底数为3的等比数列
log_arr = np.logspace(0, 8, 6, base=3)
print("9. 等比数列:", log_arr)